package cn.itheima.edu.info.manger.controller;

import cn.itheima.edu.info.manger.domain.Teacher;
import cn.itheima.edu.info.manger.service.TeacherService;

import java.util.Scanner;

public class TeacherController {
    //创建键盘录入对象和业务员对象
    Scanner sc = new Scanner(System.in);
    TeacherService teacherService = new TeacherService();

    public void start() {

        lo:
        while (true) {
            System.out.println("--------欢迎来到 <老师> 管理系统--------");
            System.out.println("请输入您的选择: 1.添加老师  2.删除老师  3.修改老师  4.查看老师  5.退出");
            String choose = sc.next();
            switch (choose) {
                case "1":
                    System.out.println("添加信息");
                    addStudeng();
                    break;
                case "2":
                    System.out.println("删除信息");
                    deleteTeacher();
                    break;
                case "3":
                    System.out.println("修改信息");
                    updateTeacher();
                    break;
                case "4":
                    System.out.println("查看信息");
                    showTeacher();
                    break;
                case "5":
                    System.out.println("感谢您的使用，再见！");
                    break lo;
                default:
                    System.out.println("您输入的选择不存在，请您重新输入：");
                    break;

            }
        }
    }




    /**
     * 添加老师方法
     */

    private void addStudeng() {
        //定义一个id
        String Teacherid;
        while (true) {
            //判断老师id是否存在，如果存在就提示用户录入的id已经存在请重新录入
            System.out.println("请输入老师编号：");
            Teacherid = sc.next();
            //调用业务的isExists方法将录入的id传递进去返回一个boolean类型的结果
            boolean result = teacherService.isExists(Teacherid);
            if (result) {
                System.out.println("您输入的id已经存在，请您重新输入：");
            } else {
                break;
            }
        }
        //调用aaTeacherinfo方法 获取添加信息后的老师对象
        Teacher teacher= addTeacherinfo(Teacherid);

        //调用业务员addTeacher方法传递参数
        teacherService.addTeacher(teacher);
        //提示用户添加成功
        System.out.println("添加成功！");


    }

    /**
     * 查看老师信息方法
     */
    public void showTeacher() {

        //调用业务的findTeacher方法获取数组,使用老师类型的数组接收返回值,容器中存在老师信息返回一老师类型数组，否则返回一个null
        Teacher[] teachers = teacherService.findTeacher();
        //数组为null表示当前容器为空，否则遍历数组中的元素；
        if (teachers == null) {
            System.out.println("当前容器为空，请添加后重试！");
            return;
        }

        System.out.println("编号" + "\t\t" + "姓名" + "\t" + "年龄" + "\t" + "生日");
        for (int i = 0; i < teachers.length; i++) {
            if (teachers[i] != null) {
                teachers[i].show();

            }
        }
    }

    /**
     * 删除老师方法
     */
    public void deleteTeacher() {
        //调用业务员的findTeacher方法，判断当前容器是否为空，为空则提示用户添加后再试,
        Teacher[] teachers = teacherService.findTeacher();
        if (teachers == null) {
            System.out.println("当前容器为空，请添加后重试！");
            return;
        }
        //调用addTeacherinid方法，获取一个用户要进行删除的老师id
        String delid=addTeacherid();
            //调用业务员的deleteTeacher（）删除元素，并提示用户删除删除成功
            teacherService.deleteTeacher(delid);
            System.out.println("删除成功！");

    }

    /**
     * 修改老师信息的放法
     */
   public void updateTeacher() {
       //调用业务员的findTeacher方法，判断当前容器是否为空，为空则提示用户添加后再试,
       Teacher[] teachers = teacherService.findTeacher();
       if (teachers == null) {
           System.out.println("当前容器为空，请添加后重试！");
           return;
       }
       //调用addTeacherinid方法，获取一个用户要进行修改的老师id
       String upid=addTeacherid();
       //调用aaTeacherinfo方法 获取添加信息后的老师对象
     Teacher teacher= addTeacherinfo(upid);

           //调用业务员的updateTeacher方法，修改老师信息
           teacherService.updateTeacher(teacher,upid);
           System.out.println("修改成功！");

    }

    /**
     *
     * @returnfa 返回一个用户要进行 删除/修改 的老师id
     */
    private String addTeacherid() {

        String id;
        while (true) {
            System.out.println("请输入您要删除/修改的老师编号：");
            id= sc.next();
            //调用业务员的isExists方法判断用户要删除/修改的id是在容器中是否存在，存在则跳出循环，否则提示用户id不存在请重新输入
            boolean result = teacherService.isExists(id);
            if (result) {
                return id;
            } else {
                System.out.println("您要修改的老师id不存在，请您重新输入：");
            }
        }

    }

    /**
     *
     * @param id 用户要进行 删除/修改 的老师id
     * @return 返回一个封装好的老师对象
     */
    public Teacher addTeacherinfo(String id) {
        //提示用户添加修改信息
        System.out.println("请输入老师姓名");
        String upname = sc.next();
        System.out.println("请输入老师年龄：");
        String upage = sc.next();
        System.out.println("请输入老师生日：");
        String upbirthday = sc.next();
        //创建老师对象将添加的老师信息传入
        Teacher teacher = new Teacher(id, upname, upage, upbirthday);
        return  teacher;

    }



}
